package com.itheima.d8_collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        // 学会Collections这个工具类
        //1. 批量给集合添加元素
        List<String> list = new ArrayList<>();
        // addAll(Collection<? super T> c, T... elements)
        Collections.addAll(list,"Java","Mybatis","SSM");
        System.out.println(list);
        // 2 打乱list集合顺序，没有打乱set集合的方法，因为set本身就是按照hashcode进行无序的 不需要打乱
        // shuffle 打乱、洗牌这个方法;利用随机数交换数组值
      //  shuffle(List<?> list)
        System.out.println("=======2=======");
        Collections.shuffle(list);
        System.out.println(list);


        // 3 对List的排序   实现了Comparable接口的类，会有排序
        // sort(List<T> list)
        //sort(List<T> list, Comparator<? super T> c)
        List<Integer> list1 = new ArrayList<>();
        Collections.addAll(list1,12,2,3,14,5,6);
        System.out.println(list1);
        Collections.sort(list1);
        System.out.println(list1);
        // 扩展，那list集合 能排序对象这种么
        Cat c1 = new Cat(17);
        Cat c2 = new Cat(14);
        List<Cat> cats = new ArrayList<>();
        Collections.addAll(cats,c1,c2);
        System.out.println(cats);
        // 或者 Cat类实现 Comparable接口，重写Compare方法
        // List集合可以重复，比较相同也可以保留
        Collections.sort(cats, new Comparator<Cat>() {
            @Override
            public int compare(Cat o1, Cat o2) {
                return o1.getAge() - o2.getAge();
            }
        });
        System.out.println(cats);

    }
}

class Cat{
    private int age;

    public Cat() {
    }

    public Cat(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "age=" + age +
                '}';
    }
}
